﻿using Babylon.Toolbox;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;

namespace Babylon.Primitives
{
    /// <summary>
    /// Represents a 3d primitive shape
    /// </summary>
    public interface IDrawableShape
    {
        /// <summary>
        /// get or set the device used to load content or draw the shape
        /// </summary>
        GraphicsDevice Device { get; set; }

        /// <summary>
        /// get the bounding box of the shape
        /// </summary>
        BoundingBox BoundingBox { get; }
        
        /// <summary>
        /// get the bounding sphere of the shape
        /// </summary>
        BoundingSphere BoundingSphere { get; }
        
        /// <summary>
        /// get or set the effect associated with the shape
        /// </summary>
        Effect Effect { get; set; }

        /// <summary>
        /// Load content (initialize buffers)
        /// </summary>
        void LoadContent();

        /// <summary>
        /// Draw the shape using the associated effect
        /// </summary>
        void Draw();
    }
}
